﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Badge_Manager.View;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager.Controlli
{
    public partial class ctrlCorsiAttivita : UserControl
    {
        private List<Stanza> listaAule;
        private Utente User;
        private Corso corso;

        public ctrlCorsiAttivita(Utente utente, Corso corso)
        {
            InitializeComponent();
            this.User = utente;
            this.corso = corso;
            getAule();
        }

        private void getAule()
        {
            listaAule =
                new ctrlStanza().SelectAll();
            cmbElencoAule.DataSource = listaAule;
            if (cmbElencoAule.Items.Count > 0)
                cmbElencoAule.SelectedIndex = 0;
        }

        private void cmdAggAula_Click(object sender, System.EventArgs e)
        {
            frmAule frm = new frmAule(User, StatoForm.Nuovo);
            frm.ShowDialog();
        }

        private bool VerificaEsistente()
        {
            List<Corso> corsi = new ctrlCorso().SelectAll();
            foreach (Corso corsoEsistente in corsi)
            {
                if (corsoEsistente.Equals(corso))
                {
                    return true;
                }
            }
            return false;
        }

        public void Salva()
        {
            #region Controlli TextBox

            if (string.IsNullOrEmpty(txtCodice.Text))
            {
                MessageBox.Show("La casella Codice non può essere Vuota", "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtCodice.Focus();
                return;
            }
            if (string.IsNullOrEmpty(txtNome.Text))
            {
                MessageBox.Show("La casella Nome non può essere Vuota", "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtNome.Focus();
                return;
            }
            if (string.IsNullOrEmpty(upNumeroOre.Value.ToString()))
            {
                MessageBox.Show("La casella Durata Ore non può essere Vuota", "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                upNumeroOre.Focus();
                return;
            }

            #endregion Controlli TextBox

            corso.Codice = txtCodice.Text.Trim();
            corso.DataInizio = dtpDataInizio.Value;

            //Controllo che il giorno selezionato non sia ne sabato ne domenica
            if (corso.DataInizio.DayOfWeek == DayOfWeek.Saturday || corso.DataInizio.DayOfWeek == DayOfWeek.Sunday)
            {
                DialogResult scelta = MessageBox.Show("Il giorno selezionato non è un feriale."
                        + "Vuoi impostare il primo giorno lavorativo della settimana successiva?"
                    , "Attenzione", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

                if (scelta == System.Windows.Forms.DialogResult.Yes)
                {
                    corso.DataInizio = new ctrlAttivitaDettaglio(null)
                        .getGiornoDopoValido(dtpDataInizio.Value);
                }
                else
                {
                    return;
                }
            }

            corso.Nome = txtNome.Text.Trim();
            corso.NumeroOre = Convert.ToInt32(upNumeroOre.Value);

            if (VerificaEsistente())
            {
                MessageBox.Show("Corso esistente", "ATTENZIONE!", MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                return;
            }
            try
            {
                new ctrlCorso().Inserisci(corso);
            }
            catch (ImpossibileInserire ex)
            {
                MessageBox.Show(ex.Message + "/n Corso non inserito"
                    , "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MessageBox.Show("Salvataggio Riuscito");

            txtCodice.Clear();
            txtNome.Clear();
        }

        private void ctrlCorsiAttivita_Load(object sender, EventArgs e)
        {
        }
    }
}